using System.Data;

namespace DataGridView0
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void Form1_Load(object sender, EventArgs e)
        {

            //dataGridView1.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableAlwaysIncludeHeaderText;//ctrl+c 复制自动包含列名
            //  dataGridView1.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableWithoutHeaderText;//ctrl+c 复制不包含列名
            //第一种添加列、行的方式
            DataTable dt = new DataTable();// 1、第一步：创建 DataTable 变量
            dt.Columns.Add("序号");//2、第二步：添加表头
            dt.Columns.Add("旧名称");
            dt.Columns.Add("新名称");
            dt.Rows.Add("1", "星球大战Ⅰ【国语字幕】.mp4", "星球大战Ⅰ.mp4");//3、第三步：添加行内容
            dt.Rows.Add("2", "星际迷航Ⅰ【国语字幕】.mp4", "星际迷航Ⅰ.mp4");
            dataGridView1.DataSource = dt;//4、第四步：绑定数据源
            // dataGridView1.Rows[0].ReadOnly = true;// 5、第五步：设定行的只读属性
            dataGridView1.Columns[0].ReadOnly = true;
            dataGridView1.Columns[1].ReadOnly = true;//6、第六步：设定列的只读属性

            //第二种中添加列行的方式：
            //第一步：在设计模式datagridview控件中添加列
            // 第二步：
            int newRowsIndex = dataGridView2.Rows.Add();// 返回一个新行的索引，（行列索引以0开始）
            dataGridView2.Rows[newRowsIndex].Cells["Column1"].Value = "测试新单元格文本";//以列名或索引方式添加新行的内容
            MessageBox.Show((string)dataGridView2.Rows[newRowsIndex].Cells["Column1"].Value);//需要加(string)类型准换才能读取单元格内的值。

//第三种添加行的方式：datagridview提前建好列，直接添加行数据
 // 假设dataGridView1已经存在，并且已经有列被创建

 // 创建一个object数组，其中每个元素对应一列的数据
 //      object[] row1 = new object[] { "数据1", "数据2"};

 // 添加新行到DataGridView
 //        dataGridView1.Rows.Add(row1);

        }
        // timer1.Enabled = true;//在form_load中激活定时器，以实时更新
        /*
          private void timer1_Tick(object sender, EventArgs e)
        {
            if (dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit))//6、判断datagridview1内容是否有修改
            {
                // 7、让 DataGridView1 的所有列宽自动调整一下。
                dataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);
            }
        }
         
         
         
         
         */

       
    }
}
/* 
 DataGridView的几个基本操作：
 
 1.获取某个（指定的）单元格的值：
dataGridView1.Row[i].Cells[j].Value;
 
 2.获取选中的总行数：
dataGridView1.SelectedRows.Count;

3.获取当前选中行的索引：
dataGridView1.CurrentRow.Index;

4.获取当前选中单元格的值：
dataGridView1.CurrentCell.Value;

5.获取选中行的数据
代码：
string[] str = new string[dataGridView.Rows.Count];
for(int i;i<dataGridView1.Rows.Count;i++)
{
if(dataGridView1.Rows[i].Selected == true)
{
str[i] = dataGridView1.Rows[i].Cells[1].Value.ToString();
}
}


6.获取选中行的某个数据
int a = dataGridView1.SelectedRows.Index;
dataGridView1.Rows[a].Cells[index].Value;

7.获取某个（指定的）单元格的值：
dataGridView1.Rows[i].Cells[j].Value; Row[i]

8.获取某行的索引值
int a=dataGridView1.CurrentRow.Index;

9.获取当前选中的行
selectedRows[0]

10.获取当前选择单元内容
DataGridView1.SelectedCells(0).Value.ToString

11.获取当前选择单元第N列内容
DataGridView1.Rows(e.RowIndex).Cells(n).Value.ToString()

12.获取当前活动的单元格的行的索引
Datagridview1.CurrentCell.RowIndex

13.选中行的集合
Datagridview1.SelectedRows

14.选中列的集合
Datagridview1.SelectedColumns

15.选中单元格的集合
Datagridview1.SelectedCells

16.获取包含当前单元格的行的索引
DataGridView1.CurrentRow.Index

 
17.获取单元格总列数
int count = Datagridview1.Columns.Count;

17.获取单元格总行数
int count2 = Datagridview1.Rows.Count;

 
 
 
 
 */